ICs that include a microprocessor require a mechanism by which they start-up, or “Boot”, when they are turned on or reset.
Since they include a programmable microprocessor, such ICs are flexible enough to be designed into a variety of products. However, different products may require the IC to behave in different ways. While the majority of these differences can be accommodated by making changes to software, a mechanism is still needed to load the necessary code into the IC at boot time. Unfortunately this very mechanism may also be application specific. For example, in some applications the boot code may be stored in one of several types of external non-volatile memory chip, while in others the IC may be expected to load its boot code using one of a variety of serial communications links.
Where a plurality of sources of boot code are possible, the desired source may be indicated by blowing fuse latches such as electronic “e-fuses” on the chip. Typically each fuse represents one bit, e.g., with a blown fuse representing a logic-one and an un-blown fuse representing a logic-zero, such that a binary value can be written into one or more of such latches. The processor may include a mechanism which maps possible values of the fuse latches onto different respective sources of boot code. When the processor boots, the mechanism automatically fetches boot code from a location dependent on the value blown into the fuse latch or latches.
However, this has the disadvantage that once the fuses are blown, the boot source becomes permanently fixed. As such, a more flexible boot mechanism may be advantageous.